package com.xjiuge.fruit.service.base;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.xjiuge.fruit.mapper.base.BaseMapper;

/**
 * 通用的BaseServiceImpl实体类
 * <p>FileName: BaseServiceImpl</p>
 * <p>Author:xuhongcheng</p>
 * <p>Date: 2017年10月16日  下午2:21:38</p>
 * <p>Version 1.0</p>
 */
public class BaseServiceImpl<T ,TMapper extends BaseMapper<T>> implements BaseService<T> {
	
	private TMapper mapper;
	
	@Autowired
	public void setMapper(TMapper mapper) {
		this.mapper = mapper;
	}
	
	
	@Override
	public int deleteByPrimaryKey(String keyId) {
		return mapper.deleteByPrimaryKey(keyId);
	}

	@Override
	public int insert(T t) {
		return mapper.insert(t);
	}

	@Override
	public int insertSelective(T t) {
		return mapper.insertSelective(t);
	}

	@Override
	public T selectByPrimaryKey(String keyId) {
		return mapper.selectByPrimaryKey(keyId);
	}

	@Override
	public int updateByPrimaryKeySelective(T t) {
		return mapper.updateByPrimaryKeySelective(t);
	}

	@Override
	public int updateByPrimaryKey(T t) {
		return mapper.updateByPrimaryKey(t);
	}
	
	
	/**
	 * 
	 * 查询实体数据
	 * 
	 * BaseService.selectList<BR>
	 * <p>Author：lvjie</p>
	 * <p>Date：2016年6月8日 下午4:43:27</p>
	 * @param t
	 * @return
	 * @throws
	 */
	protected List<T> selectList(T t){
		return mapper.selectList(t);
	}
	
	/**
	 * 
	 * 查询实体数据
	 * 
	 * BaseService.selectMap<BR>
	 * <p>Author：lvjie</p>
	 * <p>Date：2016年6月14日 下午3:49:16</p>
	 * @param t
	 * @return
	 * @throws
	 */
	protected List<Map<String,Object>> selectMap(T t){
		return mapper.selectMap(t);
	}


	
	/**
	 * 
	 * 返回总条数
	 * 
	 * BaseService.count<BR>
	 * <p>Author：lvjie</p>
	 * <p>Date：2016年6月12日 下午4:29:34</p>
	 * @param t
	 * @return
	 * @throws
	 */
	protected int count(T t){
		return mapper.countList(t);
	}
	
	/**
	 * 
	 * 返回总条数
	 * 
	 * BaseService.countMap<BR>
	 * <p>Author：lvjie</p>
	 * <p>Date：2016年6月14日 下午3:30:44</p>
	 * @param t
	 * @return
	 * @throws
	 */
	protected int countMap(T t){
		return mapper.countMap(t);
	}
	
}
